NIUHE

日々私たちが过ごしている日常というのは、実は奇迹の连続なのかもしれんな

Mysqli 使用

连接数据库并获取相关信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$mysqli=@new mysqli("localhost", "root", "", "mysql");
//如果连接错误
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
exit;
}
//获取当前字符集
echo $mysqli->character_set_name()."<br>";
//获取客户端信息
echo $mysqli->get_client_info()."<br>";
//获取mysql主机信息
echo $mysqli->host_info."<br>";
//获取服务器信息
echo $mysqli->server_info."<br>";
//获取服务器版本
echo $mysqli->server_version."<br>";
//关闭数据库连接
$mysqli->close();

查询数据

1
2
3
4
5
6
7
8
9
10
//构造SQL语句
$query = "SELECT * FROM designer order by ID LIMIT 3";
//执行SQL语句
$result = $mysqli->query($query);
//遍历结果
while($row = $result->fetch_array(MYSQLI_BOTH)){
echo "id".$row['id']."<br>";
}
//释放结果集
$result->free();

在这里需要注意的是

1
fetch_array(MYSQLI_BOTH)

这个方法,参数有三个,分别是 MYSQLI_BOTHMYSQLI_NUMMYSQLI_ASSOC

如果参数传入了 MYSQLI_BOTH,返回数组的索引既包括数字和名称。

1
2
3
4
5
6
7
8
9
array (size=26)
0 => string '10062' (length=5)
'id' => string '10062' (length=5)
1 => string '??' (length=2)
'name' => string '??' (length=2)
2 => string '1016903103@qq.com' (length=17)
'email' => string '1016903103@qq.com' (length=17)
3 => string '18366119732' (length=11)
'phone' => string '18366119732' (length=11)

如果参数传入了 MYSQLI_NUM,返回数组的索引只包含数字。

1
2
3
4
5
array (size=13)
0 => string '10062' (length=5)
1 => string '??' (length=2)
2 => string '1016903103@qq.com' (length=17)
3 => string '18366119732' (length=11)

如果参数传入了 MYSQLI_BOTH,返回数组的索引只包含名称。

1
2
3
4
5
array (size=13)
'id' => string '10062' (length=5)
'name' => string '??' (length=2)
'email' => string '1016903103@qq.com' (length=17)
'phone' => string '18366119732' (length=11)

其实还有等价的方法 fetch_row()fetch_assoc() 他们之间的关系如下

1
2
3
4
5
6
7
8
9
10
11
   $result->fetch_row() 
= mysql_fetch_row()
= $result->fetch_array(MYSQLI_NUM)
= mysql_fetch_array(MYSQLI_NUM)
返回索引数组

$result->fetch_assoc()
= mysql_fetch_assoc()
= $result->fetch_array(MYSQLI_ASSOC)
= mysql_fetch_array(MYSQLI_ASSOC)
返回索引列名

插入数据

1
2
3
4
5
6
7
8
9
10
11
12
//插入数据
$sql="insert into designer(name,phone) values('hello','18352682923')";
//执行插入语句
$result=$mysqli->query($sql);
//如果执行错误
if(!$result){
echo "SQL语句有误<br>";
echo "ERROR:".$mysqli->errno."|".$mysqli->error;
exit;
}
//如果插入成功,则返回影响的行数
echo $mysqli->affected_rows;

更新数据

1
2
3
4
5
6
7
8
9
10
11
12
//更新数据
$sql="update designer set name = 'hello' where id = 10062";
//执行插入语句
$result=$mysqli->query($sql);
//如果执行错误
if(!$result){
echo "SQL语句有误<br>";
echo "ERROR:".$mysqli->errno."|".$mysqli->error;
exit;
}
//如果插入成功,则返回影响的行数
echo $mysqli->affected_rows;

预处理语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//准备好一条语句放到服务器中,插入语句
$sql = "insert into designer(name, email) values(?, ?)";
//生成预处理语句
$stmt = $mysqli->prepare($sql);
//给占位符号每个?号传值(绑定参数) i d s b,第一个参数为格式化字符,ss代表两个字符串,d代表数字
$stmt->bind_param("ss", $name, $email);
//为变量赋值
$name = "Mike";
$email = "mike@live.cn";
//执行
$stmt->execute();
//为变量赋值
$name = "Larry";
$email = "larry@live.cn";
//执行
$stmt->execute();
//最后输出
echo "最后ID".$stmt->insert_id."<br>";
echo "影响了".$stmt->affected_rows."行<br>";

Powered by Hexo and Theme by Hacker
© 2019 NIUHE